<?php
	require_once "View\LoginView.php";
	require_once "Model\LoginHandler.php";

	class LoginReturnValue {
		public $html = "";
		public $feedback = "";
		public $isLoggedIn = false;
	}
	
	class LoginController {
		
		private $lv;
		private $lh;
		
		const WRONG_INFO = "Fel användarnamn eller lösenord";
		//konstruktor
		public function __construct(){
			$this->lv = new LoginView();
			$this->lh = new LoginHandler();
		}
		
		public function DoControll() {
			
			$ret = new LoginReturnValue();
			
			
			//Är användaren inloggad?
			if ($this->lh->IsLoggedIn()){
				
				//försöker användaren logga ut?
				if($this->lv->TriedToLogOut()){
					$this->lv->RemoveCoockies();
					$this->lh->DoLogout();
				} 
			} 
			//Är användaren inte inloggad?
			else {
				
				//Har användaren klickat på Login
				if ($this->lv->TriedToLogin()){
				
					//Loggar in om uppgifterna stämmer
					if($this->lh->DoLogin($this->lv->GetUserName(), $this->lv->GetPassword())){
							
						//Sparar informationen om användaren klickar på remember me.	
						if($this->lv->RememberUser()){
							$this->lv->SetUsernameCookie();
							$this->lv->SetPasswordCookie();
						}
					} 
					//Fel uppgifter inmatade!
					else {
						$ret->feedback = WRONG_INFO;
					}
				} 
				//Om användaren inte försökt logga in
				else {
					
					//Om det finns info på cookies så används de.
					if($this->lv->IsCoockiesSet()){
						$this->lh->DoLogin($this->lv->GetUsernameCookie(), $this->lv->GetPasswordCookie());
					}
				}
				
			}
			
			if ($this->lh->IsLoggedIn()) {
				$ret->html = $this->lv->DoLogoutBox();
				$ret->html .= $this->lv->DoFeedback($ret->feedback);
				$ret->isLoggedIn = true;
			} else {
				$ret->html = $this->lv->DoLoginBox();
				$ret->html .= $this->lv->DoFeedback($ret->feedback);
			}
			
			return $ret;
				
		}
	}
?>